package com.jumi.microservice.service;

import com.jumi.microservice.domain.GoodsSkuDTO;
import com.jumi.microservice.domain.GoodsSkuInventoryDTO;;
import com.jumi.microservice.domain.GoodsSkuQuery;
import javax.servlet.http.HttpServletRequest;
import java.util.List;

/**
 * 商品sku管理service组件接口
 *
 * @author Administrator
 */
public interface GoodsSkuService{

    /**
     * 分页查询商品sku
     *
     * @param goodsSkuQuery 查询条件
     * @return GoodsSkuDTO集合列表
     */
    List<GoodsSkuDTO> listGoodsSkuByPage(GoodsSkuQuery goodsSkuQuery);

    /**
     * 编辑虚拟销量
     *
     * @param id         商品sku id
     * @param virtualNum 虚拟销量
     * @param request    HttpServletRequest
     */
    void updateVirtualNum(String id, Integer virtualNum, HttpServletRequest request);

    /**
     * 统计spu虚拟销量
     *
     * @param spuId   商品spuId
     * @return spu虚拟销量
     */
    Integer countVirtualNumBySpuId(Long spuId);

    /**
     * 根据第三方商品spu id查询sku集合设置成本价
     *
     * @param id 第三方商品spu id
     * @return GoodsSkuDTO集合
     */
    List<GoodsSkuDTO> listGoodsSku(Long id);

    /**
     * 第三方商品spu设置成本价
     *
     * @param goodsSkus 第三方商品spu集合
     *  @param request    HttpServletRequest
     */
    void setGoodsSkuCostPrice(List<GoodsSkuDTO> goodsSkus,HttpServletRequest request);

    /**
     * 追加商品sku库存
     *
     * @param goodsSkuInventoryList 商品sku集合
     * @param request    HttpServletRequest
     */
    void replenishInventory(List<GoodsSkuInventoryDTO> goodsSkuInventoryList, HttpServletRequest request);

    /**
     * 根据商品sku id集合查询sku信息
     *
     * @param ids 商品sku id集合
     * @return GoodsSkuDTO集合
     */
    List<GoodsSkuDTO> listGoodsSkuByIds(List<Long> ids);
}
